﻿using System;
using System.Data.Common;

namespace _76_查找符合条件的元素_数组
{
    class Program
    {
        static void Main(string[] args)
        {
            WorkItem[] items =
            {
                new WorkItem
                {
                    ID=1,
                    Title="工序1",
                    StartTime=new DateTime(2018,7,1,8,36,0),
                    EndTime=new DateTime(2018,7,2,17,30,0)
                },
                new WorkItem
                {
                    ID=2,
                    Title="工序2",
                    StartTime=new DateTime(2018,7,15,10,36,0),
                    EndTime=new DateTime(2018,7,2,17,30,0)
                },
                new WorkItem
                {
                    ID=3,
                    Title="工序3",
                    StartTime=new DateTime(2018,7,16,12,36,0),
                    EndTime=new DateTime(2018,7,2,17,30,0)
                },
                new WorkItem
                {
                    ID=4,
                    Title="工序4",
                    StartTime=new DateTime(2018,7,18,9,36,0),
                    EndTime=new DateTime(2018,7,2,17,30,0)
                },
                new WorkItem
                {
                    ID=5,
                    Title="工序5",
                    StartTime=new DateTime(2018,7,1,14,36,0),
                    EndTime=new DateTime(2018,7,2,17,30,0)
                },
                new WorkItem
                {
                    ID=6,
                    Title="工序6",
                    StartTime=new DateTime(2018,7,1,22,36,0),
                    EndTime=new DateTime(2018,7,2,17,30,0)
                },
            };

            //查找开始时间晚于2018年7月15日的工序，使用find方法，只能返回最先找到的那个
            WorkItem zoomla = Array.Find(items, fage发哥 =>
            {
                DateTime condition = new DateTime(2018, 7, 15);
                if (fage发哥.StartTime > condition)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            });
            Console.WriteLine("开始时间晚于2018年7月15日的最近一条工序：");
            Console.WriteLine($"编号：{zoomla.ID}\n标题：{zoomla.Title}\n开始时间：{zoomla.StartTime}\n结束时间：{zoomla.EndTime}\n\n");

            //查找开始时间晚于7月10日的工序，使用findAll方法，会将所有数组返回
            WorkItem[] zoomla2 = Array.FindAll(items, 老汪 =>
            {
                DateTime 找到 = new DateTime(2018, 7, 10);
                if (老汪.StartTime > 找到)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            });
            Console.WriteLine("开始时间晚于2018年7月10日的所有工序：");
            foreach (var item in zoomla2)
            {
                Console.WriteLine($"编号：{item.ID}\n标题：{item.Title}\n开始时间：{item.StartTime}\n结束时间：{item.EndTime}\n");
            }

        }
    }

    //声明一个workItem类，假设它表示某生产过程中一道工序信息
    public class WorkItem
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }
    }

}
